package internal;

/**
 * 根据观察者模式,做一个模仿mq的事件推送机制,进行解耦,参考了google.guava
 * Created by DJJ on 2019/3/28.
 */
public interface Bus {
    /**
     * 注册观察对象
     * @param subscriber
     */
    void register(Object subscriber);

    /**
     * 取消观察
     * @param subscriber
     */
    void unregister(Object subscriber);

    /**
     * 推送事件
     * @param event 为推送的参数类型
     */
    void post(Object event);

    /**
     *
     * @param event 推送的参数类型
     * @param topic 仿mq 的topic
     */
    void post(Object event, String topic);

    void close();

    /**
     *  获取对应的bus的取的名字
     * @return
     */
    String getBusName();
}
